package calculator.operator;

import java.math.BigDecimal;
import java.util.Stack;

public interface Operator {

    /**
     *
     * @param num1 第一个数
     * @param num2 第二个数
     * @return 运算后的结果
     */
    default double doCal(double num1, double num2){throw new RuntimeException("非法操作");};

    /**
     *
     * @param stack 存放操作数的栈
     * @return double
     */
    default double doCal(Stack<Double> stack){
        return doCal(stack.pop(),stack.pop());
    }

    default BigDecimal fix(double d){return new BigDecimal(d + "");}

    /**
     *
     * @return 返回该运算符的优先级
     */
    int getPriority();

    /**
     *
     * @param c 支持什么类型的运算符，在表达式中具体的表达方式
     * @return
     */
    boolean support(char c);

}
